#include "../../include/online/CacheGroup.hpp"
#include "../../include/server/Logger.hpp"

/* __thread size_t __thread_id; */
CacheGroup::CacheGroup(size_t capacity) 
    : _mainCache(capacity),
    _pendingUpdateCache(capacity),
    _readOnly(false){

}

string CacheGroup::getRecord(const string &query) {
    return _mainCache.getRecord(query);
}

void CacheGroup::insertRecord(const string &query, const string &result) {
    //主cache和待更新cache都需要插入记录
    _mainCache.insertRecord(query, result);
    if(!_readOnly)
        _pendingUpdateCache.insertRecord(query, result);
}

void CacheGroup::update(const CacheGroup &group) {
    //先将所有的更新记录写入主缓存
    _mainCache.update(group._mainCache);
    //将主缓存的更新后的内容写入各个从缓存
    _pendingUpdateCache.update(group._pendingUpdateCache);
}

LRUCache CacheGroup::getMainCache()
{
    return _mainCache;
}
